% title: Welcome

This is the page, which informs about general updates of my blog(s). Since this is the initial post here, I will describe what technologies I used to code this blog. As you will see I used many well known technologies for creating this website. The result of combining these is a website, which makes it very easy for me to add content.

* [Python 3.5](https://www.python.org)

	This website is written in Python mostly. The more I do Python programming, the more I am delighted with how many useful packages the Python community created, of which most are available on PyPi, the _Python Package Index_. Installing them is a matter of uttering one terminal command most of the time and you are ready to go.

	Besides that, I just like Python as a language a lot. It has many features, which result in better looking code. It is dynamically typed, which saves you a lot of typing. Python supports many concepts of OOP, which other languages are missing (looking at you Java, C, …). Using these features results in cleaner, less error prone and ultimately simply less code.

	<!-- It is an interpreted language and usually does not use a JIT and thus its implementations are usually not the fastest among implementations of programming languages. However, did I mention the many beautiful libraries and packages? There is even a package called [numba](https://pypi.python.org/pypi/numba/), which gives you JIT for the price of adding one tiny annotation to your code. There have been [benchmarks](https://jakevdp.github.io/blog/2015/02/24/optimizing-python-with-numpy-and-numba/), which show numba's amazing speed. If you really need number crunching power, you should consider libraries like `numpy`, `scipy` and `numba`, instead of writing naive loops. In the cases where you do not need that kind of speed, plain Python code will make you happy. -->

* [Github](https://github.com/ZelphirKaltstahl)

	GIT is a well working [VCS](https://en.wikipedia.org/wiki/Version_control), which every modern software developer should know. I even recommend it to many people from other professions, simply because of the advantages a VCS has.

* [Flask](http://flask.pocoo.org)

	Flask is a microframework for Python. With Flask you can create a simple static website in less than a minute, but it also has many great ideas built in, which enable it to be used in companies, with huge traffic and "big" websites. Flask uses a templating language named _Jinja2_.

* [Jinja2](http://jinja.pocoo.org)

	Jinja2 is an easy to understand templating language, which uses inheritance concepts and others to save you a lot of writing. For example it supports loops. You can hand it a list on the Python side of things and it can generate HTML for each element of that list or include other templates. This helps in modularizing your HTML code.

* [Markdown](https://daringfireball.net/projects/markdown/)

	Markdown is a very easy language to learn. One can learn it in one day. If only offers the very basics of formatting for your text and thus keeps your focus on writing. If you need additional formatting, you can use HTML inside a markdown file.

	All posts on this blog are written in Markdown. A Markdown parser named _mistune_ parses the files and returns their HTML code equivalent, using CSS classes, to make the HTML elements stylable using CSS.

	Here are some advantages of using Markdown for writing posts:

	* easy to write, focussed on the content, not the formatting
	* very little or no overhead in writing
	* moving posts to another platform with ease, only needs a markdown parser

* [mistune](https://github.com/lepture/mistune)

	This is the mentioned Markdown parser. It works very well, is fast, and is quite customizable. It supports many features of Markdown.

* HTML

	Obviously.

* CSS

	Obviously.

* [MathJax](https://www.mathjax.org)

	MathJax is a JavaScript library, which translates your Math mode code to pretty SVGs of mathematical formulas on your website. This is of course very useful for scientific writting / blogging.

* [jQuery](http://jquery.com)

	I use jQuery in particular for the AJAX capabilities it has. Makes that stuff a lot easier.

* [Bootstrap](http://getbootstrap.com)

	I use Bootstrap for the navigation.

* [pythonanywhere](https://www.pythonanywhere.com)

	For a long time I had problems getting my blog online, deploying it on some hoster. I tried for example Heroku, but their installer already failed at the very first step, which is installing the so called tool belt and I could not find any fix for the issue it had, so I gave up on that one. I did not like the idea of installing something in my system in order to be able to upload my project somewhere anyway. I also took a look on some other hosters, but eventually pythonanywhere seemed to offer the deployment process with the least amount of work and research needed. I had one problem with routes to static files, but the very same day I posted a question about that in their forum, someone of the developer team answered it and solved the problem. So I have to say their support is really great.

	They give you a configuration page, in which you can configure routes, which are then probably used by Nginx in the backend. In addition to that, they give you a shell, limited to your personal directory on their server. In this shell you can create virtualenvs and install packages from [PyPi](https://pypi.python.org/pypi) and use [GIT](https://git-scm.com) to download stuff into your directory, including of course your own website. These tools enable you to develop a version controlled website, which you only need to pull in your directory on pythonanywhere for deployment. Very simple and efficient.

	For a small website like this blog, a free account (I think they call it developer account.) is probably enough. They have a very logical business model. Basically you have a certain amount of CPU time for free. If you need more or a better domain name, you can get upgraded accounts. Depending on how well this website runs and what the future holds, I might decide to get such an upgraded account.

% author: Zelphir Kaltstahl
% date: 2015-05-18
